<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .app {
            overflow: hidden;
            height: 500px;
            width: 500px;
        }

        .app>div {
            height: 200px;
            width: 100%;
            background: yellow;
        }

        .app>div:first-child {
            margin-bottom: 20px;
        }

        .app>div:last-child {
            margin-top: 20px;
        }
    </style>
</head>

<body>
    <div class="app">
        <div class="box"></div>
        <div class="box1"></div>
    </div>

    <script>
        'use strict'
        var obj = {
            name: "lyy",
            age: 25
        }
        // 可以对对象中的某些属性进行限制
        Object.defineProperties(obj, {
            name: {
                "configurable": false,
                enumerable: false
            }
        })
        // Object.defineProperty(obj,'name',{
        //     configurable:true,// 表示此对象可以删除
        //     enumerable:false,// 表示此对象可以枚举出来
        //     writable:true,// 表示此属性可以读写
        //     value:"lyys",// 设置值
        // })
        // 不可枚举表示 forin 和 object.keys 获取不到 这个不可枚举的属性
        console.log(Object.keys(obj));

        // 带 own 都可以获取不可枚举的属性
        console.log(Reflect.ownKeys(obj));
        console.log(Object.getOwnPropertyNames(obj));
        obj.__proto__.egg = 'egg'
        console.log('egg' in obj);// 去遍历 原型上的 同时也可以获取不可枚举的
        // Object.defineProperty(obj,'name',{
        //     configurable:true,// 表示此对象可以删除
        //     enumerable:true,// 表示此对象可以枚举出来
        // })
        console.log(obj);
    </script>

</body>

</html>